package gruppo12.msp.elaboration;

import java.io.Serializable;

/**
 * Classe che rappresenta il PDI e contenente tutte le informazioni sui PDI
 * 
 * @author Antonio Duca, Jacopo Festa, Domenico Fiorilli, Dante Granese, Saverio
 *         Lemma, Marco Lombardi e Fiore Pierno
 * 
 */

public class PDI implements Serializable {

	private static final long serialVersionUID = 1631953318099202392L;
	private Categoria categoria;
	private String stringaId;
	private String stringaNome;
	private String stringaRiferimento;
	private String stringaIndirizzo;
	private String stringaSitoWeb;
	private String stringURL;
	private String numTelefono;
	private Float rating = null;
	private Posizione posizione;
	private boolean selezionato = false;
	private boolean visitato = false;

	/**
	 * Costruttore della classe
	 * 
	 * @param stringaId
	 *            id del PDI
	 */
	public PDI(String stringaId) {
		this.stringaId = stringaId;
	}

	/**
	 * Metodo che ritorna la categoria relativa ad un PDI
	 * 
	 * @return la categoria relativa ad un PDI
	 */
	public Categoria getCategoria() {
		return categoria;
	}

	/**
	 * Metodo che imposta la categoria relativa ad un PDI
	 * 
	 * @param categoria
	 *            la categoria relativa ad un PDI
	 */
	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	/**
	 * Metodo che ritorna l'id del PDI
	 * 
	 * @return stringaId del PDI
	 */
	public String getId() {
		return stringaId;
	}

	/**
	 * Metodo che ritorna il riferimento, serve per la richiesta a Google Maps
	 * 
	 * @return stringaRiferimento
	 */
	public String getRiferimento() {
		return stringaRiferimento;
	}

	/**
	 * Metodo che imposta il riferimento, serve per la richiesta a Google Maps
	 * 
	 * @param stringaRiferimento
	 *            riferimento
	 */
	public void setRiferimento(String stringaRiferimento) {
		this.stringaRiferimento = stringaRiferimento;
	}

	/**
	 * Metodo che ritorna il rating di un PDI
	 * 
	 * @return rating di un PDI
	 */
	public Float getRating() {
		return rating;
	}

	/**
	 * Metodo che imposta il rating di un PDI
	 * 
	 * @param rating
	 *            rating di un PDI
	 */
	public void setRating(Float rating) {
		this.rating = rating;
	}

	/**
	 * Metodo che ritorna il nome di un PDI
	 * 
	 * @return nome di un PDI
	 */
	public String getNome() {
		return stringaNome;
	}

	/**
	 * Metodo che imposta il nome di un PDI
	 * 
	 * @param stringaNome
	 *            nome di un PDI
	 */
	public void setNome(String stringaNome) {
		this.stringaNome = stringaNome;
	}

	/**
	 * Metodo che ritorna la posizione di un PDI
	 * 
	 * @return posizione di un PDI
	 */
	public Posizione getPosizione() {
		return posizione;
	}

	/**
	 * Metodo che imposta la posizione di un PDI
	 * 
	 * @param posizione
	 *            posizione di un PDI
	 */
	public void setPosizione(Posizione posizione) {
		this.posizione = posizione;
	}

	/**
	 * Metodo che ritorna l'indirizzo di un PDI
	 * 
	 * @return indirizzo di un PDI
	 */
	public String getIndirizzo() {
		return stringaIndirizzo;
	}

	/**
	 * Metodo che imposta l'indirizzo di un PDI
	 * 
	 * @param stringaIndirizzo
	 *            indirizzo di un PDI
	 */
	public void setIndirizzo(String stringaIndirizzo) {
		this.stringaIndirizzo = stringaIndirizzo;
	}

	/**
	 * Metodo che ritorna l'url del PDI, se presente
	 * 
	 * @return url del PDI
	 */
	public String getSitoWeb() {
		return stringaSitoWeb;
	}

	/**
	 * Metodo che imposta l'url del PDI, se presente
	 * 
	 * @param stringaSitoWeb
	 *            url del PDI
	 */
	public void setSitoWeb(String stringaSitoWeb) {
		this.stringaSitoWeb = stringaSitoWeb;
	}

	/**
	 * Metodo che ritorna l'url statico di Google Maps del PDI, se presente
	 * 
	 * @return url statico di Google Maps del PDI
	 */
	public String getUrl() {
		return stringURL;
	}

	/**
	 * Metodo che imposta l'url statico di Google Maps del PDI, se presente
	 * 
	 * @param stringURL
	 *            url statico di Google Maps del PDI
	 */
	public void setUrl(String stringURL) {
		this.stringURL = stringURL;
	}

	/**
	 * Metodo che ritorna il numero di telefono del PDI, se presente
	 * 
	 * @return numero di telefono del PDI
	 */
	public String getNumTelefono() {
		return numTelefono;
	}

	/**
	 * Metodo che imposta il numero di telefono del PDI, se presente
	 * 
	 * @param numTelefono
	 *            numero di telefono del PDI
	 */
	public void setNumTelefono(String numTelefono) {
		this.numTelefono = numTelefono;
	}

	/**
	 * Metodo che indica la selezione di un PDI
	 * 
	 * @return booleano che indica la selezione
	 */
	public boolean getSelezionato() {
		return selezionato;
	}

	/**
	 * Metodo che imposta la selezione di un PDI
	 * 
	 * @param selezionato
	 *            booleano indicante la selezione
	 */
	public void setSelezionato(boolean selezionato) {
		this.selezionato = selezionato;
	}

	/**
	 * Metodo che imposta la visita di un PDI
	 * 
	 * @param visitato
	 *            booleano indicante la visita
	 */
	public void setVisitato(boolean visitato) {
		this.visitato = visitato;

	}

	/**
	 * Metodo che indica la visita di un PDI
	 * 
	 * @return booleano indicante la selezione
	 */
	public boolean getVisitato() {
		return visitato;

	}

	/**
	 * Metodo che trasforma i parametri ottenuti in String
	 */
	public String toString() {
		String s = "Nome: " + stringaNome + "\n" + "Categoria: "
				+ categoria.getNomeCategoria() + "\n" + "Rating: " + rating
				+ "\n" + "Posizione: " + posizione.toBracketsString() + "\n\n";
		return s;
	}
}